(function(angular) {
	'use strict';

	angular.module('app.usuarios')
		.service('UsuariosService', ['restBaseUrl', '$http', UsuariosService]);

	function UsuariosService (restBaseUrl, $http) {
		var apiUrl = restBaseUrl + 'UsuarioService.svc/';

		this.create = function(userDetails) {
			var req = {
				method: 'POST',
				url: apiUrl + 'Create'
			};
			return $http(req);
		};

		this.read = function() {
			var url = apiUrl + 'Listar';
			return $http.get(url);
		};

		this.readById = function(userId) {
			var url = apiUrl + 'BuscarPorId';
			return $http.get(url, {
				params: {
					id: userId
				}
			});
		};

		this.update = function(userDetails) {
			var req = {
				method: 'PUT',
				url: apiUrl + 'Update',
				data: angular.toJson(userDetails, false),
				headers: {
					"Content-Type": "text/plain"
				}
			};
			return $http(req);
		};

		this.delette = function(userId) {
			var req = {
				method: 'DELETE',
				url: apiUrl + 'Delete',
				data: {
					id: userId
				}
			};
			return $http(req);
		};

		/*================== OTROS METODOS NO RELACIONADOS DIRECTAMENTE CON LOS USUARIOS ==================*/

		var cargarConstante = function(url) {
			var url = apiUrl + url;
			return $http.get(url, {
				cache: true
			});			
		};

		this.listarTiposId = function() {
			return cargarConstante('ConstanteTipoId');
		};

		this.listarNacionalidades = function() {
			return cargarConstante('ConstanteNacionalidades');
		};

		this.listaClientesConPE = function() {
			var url = apiUrl + 'ListarClientesConPlan';
			return $http.get(url);
		};
	}
})(window.angular);